
'''
模型层,用于存储数据和处理数据
'''

'''
title: 标题：天通苑一区19号楼3层...
total_price: 总价格
position: 地理位置: 北京、上海
area: 面积
estate: 小区名
'''

class House:
    __house_list = []  # 此列表用于存储所有的房子信息
    def __init__(self, title, total_price, position, area, estate):
        # 创建对象时。要对每一个对象添加id信息，
        # 如果没有房子，此时id为1,
        # 如果没有房子__house_list 不为空,取所有房子的id的最大值+1
        # self.__id = max(self.__house_list, key=lambda h: h.__id).__id + 1 if self.__house_list else 1
        if self.__house_list:
            # 1. 先找到id最大的一套房子a_house = {House} <__main__.House object at 0x7f5e40549f30>
            a_house = max(self.__house_list,
                          key=lambda h: h.__id)
            self.__id = a_house.__id + 1  # 将最大一套房子的id+1即为当前房子的id
        else:
            self.__id = 1
        self.__title = title  # 标题： 天通苑一区18号楼...
        self.__total_price = total_price  # 总价格
        self.__position = position  # 地理位置
        self.__area = area  # 面积
        self.__estate = estate  # 小区名
    @property
    def id(self):
        return self.__id
    # 添加所有属性的 getter 方法

    @classmethod
    def add_house(cls, title, total_price, position, area, estate):
        # 创建一个房子类型的对象。
        a_house = cls(title, total_price, position, area, estate)
        # 放入列表
        cls.__house_list.append(a_house)

if __name__ == '__main__':
    House.add_house('回龙观3居室急售', 2000000, '北京', 120, '回龙观')
    House.add_house('东方家园1居', 1200000, '上海', 40, '东方家园')
    House.add_house('东方家园2居', 2200000, '重庆', 60, '东方家园')